// RAP [rh] Keys completely disabled as not implemented in RWT
///*******************************************************************************
// * Copyright (c) 2007, 2008 IBM Corporation and others.
// * All rights reserved. This program and the accompanying materials
// * are made available under the terms of the Eclipse Public License v1.0
// * which accompanies this distribution, and is available at
// * http://www.eclipse.org/legal/epl-v10.html
// *
// * Contributors:
// * IBM Corporation - initial API and implementation
// *******************************************************************************/
//
//package org.eclipse.ui.internal.keys.model;
//
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.Iterator;
//import java.util.List;
//import java.util.Map;
//
//import org.eclipse.core.commands.common.NotDefinedException;
//import org.eclipse.core.commands.contexts.Context;
//import org.eclipse.ui.contexts.IContextService;
//import org.eclipse.ui.services.IServiceLocator;
//
///**
// * @since 3.4
// *
// */
//public class ContextModel extends CommonModel {
// private static final String CONTEXT_ID_ACTION_SETS = "org.eclipse.ui.contexts.actionSet"; //$NON-NLS-1$
// private static final String CONTEXT_ID_INTERNAL = ".internal."; //$NON-NLS-1$
//
// public static final String PROP_CONTEXTS = "contexts"; //$NON-NLS-1$
// public static final String PROP_CONTEXT_MAP = "contextIdElementMap"; //$NON-NLS-1$
// private List contexts;
// private Map contextIdToFilteredContexts;
// private Map contextIdToElement;
// private IContextService contextService;
//
// public ContextModel(KeyController kc) {
// super(kc);
// }
//
// /**
// * @param locator
// */
// public void init(IServiceLocator locator) {
// contextService = (IContextService) locator
// .getService(IContextService.class);
// contexts = new ArrayList();
// contextIdToFilteredContexts = new HashMap();
// contextIdToElement = new HashMap();
//
// Context[] definedContexts = contextService.getDefinedContexts();
// for (int i = 0; i < definedContexts.length; i++) {
// ContextElement ce = new ContextElement(controller);
// ce.init(definedContexts[i]);
// ce.setParent(this);
// contexts.add(ce);
// contextIdToElement.put(definedContexts[i].getId(), ce);
// }
// }
//
// /**
// * @return Returns the contexts.
// */
// public List getContexts() {
// return contexts;
// }
//
// /**
// * @param contexts
// * The contexts to set.
// */
// public void setContexts(List contexts) {
// List old = this.contexts;
// this.contexts = contexts;
// controller.firePropertyChange(this, PROP_CONTEXTS, old, contexts);
// }
//
// /**
// * @return Returns the contextToElement.
// */
// public Map getContextIdToElement() {
// return contextIdToElement;
// }
//
// /**
// * @param contextToElement
// * The contextToElement to set.
// */
// public void setContextIdToElement(Map contextToElement) {
// Map old = this.contextIdToElement;
// this.contextIdToElement = contextToElement;
// controller.firePropertyChange(this, PROP_CONTEXT_MAP, old,
// contextToElement);
// }
//
// /**
// * Removes any contexts according to the parameters. The contexts are stored
// * in a {@link List} to they can be easily restored.
// *
// * @param actionSets
// * <code>true</code> to filter action set contexts.
// * @param internal
// * <code>true</code> to filter internal contexts
// */
// public void filterContexts(boolean actionSets, boolean internal) {
// // Remove undesired contexts
// for (int i = 0; i < contexts.size(); i++) {
// boolean removeContext = false;
// ContextElement contextElement = (ContextElement) contexts.get(i);
//
// if (actionSets == true
// && contextElement.getId().equalsIgnoreCase(
// CONTEXT_ID_ACTION_SETS)) {
// removeContext = true;
// } else {
// String parentId;
// try {
// parentId = ((Context) contextElement.getModelObject())
// .getParentId();
// while (parentId != null) {
// if (parentId.equalsIgnoreCase(CONTEXT_ID_ACTION_SETS)) {
// removeContext = true;
// }
// parentId = contextService.getContext(parentId)
// .getParentId();
// }
// } catch (NotDefinedException e) {
// // No parentId to check
// }
// }
//
// if (internal == true
// && contextElement.getId().indexOf(CONTEXT_ID_INTERNAL) != -1) {
// removeContext = true;
// }
//
// if (removeContext) {
// contextIdToFilteredContexts.put(contextElement.getId(),
// contextElement);
// contextIdToElement.remove(contextElement);
// }
// }
//
// contexts.removeAll(contextIdToFilteredContexts.values());
//
// Iterator iterator = contextIdToFilteredContexts.keySet().iterator();
// // Restore desired contexts
// while (iterator.hasNext()) {
// boolean restoreContext = false;
// ContextElement contextElement = (ContextElement) contextIdToFilteredContexts
// .get(iterator.next());
//
// try {
// if (actionSets == false
// && (contextElement.getId().equalsIgnoreCase(
// CONTEXT_ID_ACTION_SETS) || ((Context) contextElement
// .getModelObject()).getParentId()
// .equalsIgnoreCase(CONTEXT_ID_ACTION_SETS))) {
// restoreContext = true;
// }
// } catch (NotDefinedException e) {
// // No parentId to check
// }
// if (internal == false
// && contextElement.getId().indexOf(CONTEXT_ID_INTERNAL) != -1) {
// restoreContext = true;
// }
//
// if (restoreContext) {
// contexts.add(contextElement);
// contextIdToElement.put(contextElement.getId(), contextElement);
// iterator.remove();
// }
// }
// }
//}